{
 "metadata": {
  "name": "Gibson&Robinson_1992"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H1>Simulation of an autoassociative network </H1>\n",
      "<h2> as described in Gibson & Robinson 92</H2>\n",
      "<p>Testing the storage of 50 random patterns and recall of the original pattern in an autoassociative network\n",
      "\n",
      "</p>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "# import necessary modules\n",
      "from network import topology\n",
      "from firings import Pattern, generate\n",
      "from firings import get_valid, get_spurious, get_overlap\n",
      "from plasticity import clipped_Hebbian\n",
      "from plots import raster_plot\n",
      "\n",
      "import numpy as np"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H2>Define topology</H2>\n",
      "<p>\n",
      "    <ul>\n",
      "        <li> Number of cells = 3000 </li>\n",
      "            <li> Connection probability = 0.5 % </li>\n",
      "    </ul>\n",
      "</p>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ncells = 3000\n",
      "W = topology(n  = ncells, c=0.5, seed=100)\n",
      "print(W)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[[0 1 1 ..., 1 1 0]\n",
        " [1 0 1 ..., 1 0 0]\n",
        " [0 0 0 ..., 0 0 1]\n",
        " ..., \n",
        " [0 1 0 ..., 0 0 0]\n",
        " [0 0 1 ..., 0 0 1]\n",
        " [0 1 0 ..., 1 0 0]]\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H2>Generate patterns</H2>\n",
      "\n",
      "<p>\n",
      "    We generate 50 patterns that have the same average activity as the initial pattern (a=0.1). Activity is \n",
      "    defined as the probability that the i-th cell was firing in the original pattern \n",
      "    \n",
      "<ul>\n",
      "<li> Number of patterns = 50 </li>\n",
      "<li> Activity = 0.1 % </li>\n",
      "    </ul>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "Z = Pattern(n=ncells, a = 0.1)\n",
      "Y = generate(Z, m = 50)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H3>Storage patterns by simple clipped Hebbian</H3>\n",
      "\n",
      "Whenever pre and postsynaptic cell fires and a connection exists between these cells, the value of one\n",
      "will be stored in the matrix."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# time ~ 8. s \n",
      "%time J = clipped_Hebbian(Y, W)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "CPU times: user 5.22 s, sys: 2.77 s, total: 7.98 s\n",
        "Wall time: 8.03 s\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H2>Recovery</H2>\n",
      "\n",
      "<ul>\n",
      "    <li>Number of progressive recalls = 10</li>\n",
      "    <li>slope of inhibition = 0.433</li>\n",
      "<ul>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "# progressive recall in 10 steps\n",
      "nrecall = 10\n",
      "spikes = np.empty( (nrecall+1, ncells))\n",
      "\n",
      "spikes[0] = Y[0]\n",
      "X = Y[0] # start with the initial pattern\n",
      "for i in range(1, nrecall+1):\n",
      "    \n",
      "    h = np.inner(J.T, X)/float(ncells)\n",
      "    spk_avg = np.mean(X)\n",
      "    X = (h<0.433*spk_avg).choose(1,0)\n",
      "    spikes[i] = X\n",
      "    "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# output\n",
      "for i in range(spikes.shape[0]):\n",
      "    print(' recall [%2d]:'%i),\n",
      "    print(' Firings: valid/spurious = %d/%d'%( get_valid(Z, spikes[i]), get_spurious(Z, spikes[i]))) ,\n",
      "    print(' Overlap = %f'%get_overlap(Z, spikes[i]) )\n",
      "    "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " recall [ 0]:  Firings: valid/spurious = 300/0  Overlap = 1.000000\n",
        " recall [ 1]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [ 2]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 3]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [ 4]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 5]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [ 6]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 7]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [ 8]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 9]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [10]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# time 0.18 s\n",
      "# remember that recall 0 is simply the activity of the original pattern\n",
      "%time raster_plot(spikes)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\ncBTz46VfTQAAAABJRU5ErkJggg==\n"
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "CPU times: user 0.20 s, sys: 0.00 s, total: 0.20 s\n",
        "Wall time: 0.20 s\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H2>Generate a random distortion of the input pattern</H2>\n",
      "    \n",
      "<p>To generate a random distortion of the original pattern we will generate a state that consists \n",
      "    of 10% of the active neurons in the original pattern:\n",
      "</p>\n",
      "<ul>\n",
      "    <li>similarity within the active cells: 0.1%</li>\n",
      "    <li>similarity with the rest of cells: 1 </li>\n",
      "</ul>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "b1 = 0.1\n",
      "similarity = int(Z.a*Z.n*b1) # n*a*b1=30 3000*0.1*0.1 "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "X = np.zeros(Z.n)\n",
      "X[:30] = 1 # insert a one in the first n*a*b1 elements\n",
      "get_overlap(Z,X)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "pyout",
       "prompt_number": 9,
       "text": [
        "array([ 0.31622777])"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "X = np.zeros(Z.n)\n",
      "X[:similarity] = 1 # insert a one in the first n*a*b1 elements\n",
      "# perform progressive recall in 10 steps\n",
      "# for the incomplete pattern\n",
      "nrecall = 10\n",
      "spikes = np.empty( (nrecall+1, ncells))\n",
      "\n",
      "spikes[0] = X # start with incomplete pattern\n",
      "\n",
      "for i in range(1, nrecall+1):\n",
      "    \n",
      "    h = np.inner(J.T, X)/float(ncells)\n",
      "    spk_avg = np.mean(X)\n",
      "    X = (h<0.433*spk_avg).choose(1,0)\n",
      "    spikes[i] = X\n",
      "    "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 10
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# output\n",
      "for i in range(spikes.shape[0]):\n",
      "    print(' recall [%2d]:'%i),\n",
      "    print(' Firings: valid/spurious = %d/%d'%( get_valid(Z, spikes[i]), get_spurious(Z, spikes[i]))) ,\n",
      "    print(' Overlap = %f'%get_overlap(Z, spikes[i]) )"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " recall [ 0]:  Firings: valid/spurious = 30/0  Overlap = 0.316228\n",
        " recall [ 1]:  Firings: valid/spurious = 240/28  Overlap = 0.846415\n",
        " recall [ 2]:  Firings: valid/spurious = 276/0  Overlap = 0.959166\n",
        " recall [ 3]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 4]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 5]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [ 6]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 7]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [ 8]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n",
        " recall [ 9]:  Firings: valid/spurious = 298/0  Overlap = 0.996661\n",
        " recall [10]:  Firings: valid/spurious = 297/0  Overlap = 0.994987\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# note plotting spurious firings here\n",
      "\n",
      "raster_plot(spikes)\n",
      "np.savetxt('/home/jguzman/tmp/spikes.txt', spikes, fmt='%d')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\nTkSuQmCC\n"
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H2>Implementation of the STDP rule</H2>\n",
      "\n",
      "We will test recall at different values of $\\Delta$ T"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "from STDP import delta_t"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 13
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "$\\Delta t= 0$"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "J1 = J*delta_t(0)\n",
      "print(J1)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[[ 0.          0.99010218  0.99010218 ...,  0.99010218  0.99010218  0.        ]\n",
        " [ 0.99010218  0.          0.99010218 ...,  0.99010218  0.          0.        ]\n",
        " [ 0.          0.          0.         ...,  0.          0.          0.        ]\n",
        " ..., \n",
        " [ 0.          0.99010218  0.         ...,  0.          0.          0.        ]\n",
        " [ 0.          0.          0.         ...,  0.          0.          0.        ]\n",
        " [ 0.          0.99010218  0.         ...,  0.99010218  0.          0.        ]]\n"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "X = np.zeros(Z.n)\n",
      "X[:similarity] = 1 # insert a one in the first n*a*b1 elements\n",
      "# perform progressive recall in 10 steps\n",
      "# for the incomplete pattern\n",
      "nrecall = 10\n",
      "spikes = np.empty( (nrecall+1, ncells))\n",
      "\n",
      "spikes[0] = X # start with incomplete pattern\n",
      "\n",
      "for i in range(1, nrecall+1):\n",
      "    \n",
      "    h = np.inner(J1.T, X)/float(ncells)\n",
      "    spk_avg = np.mean(X)\n",
      "    X = (h<0.433*spk_avg).choose(1,0)\n",
      "    spikes[i] = X"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 15
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# output\n",
      "for i in range(spikes.shape[0]):\n",
      "    print(' recall [%2d]:'%i),\n",
      "    print(' Firings: valid/spurious = %d/%d'%( get_valid(Z, spikes[i]), get_spurious(Z, spikes[i]))) ,\n",
      "    print(' Overlap = %f'%get_overlap(Z, spikes[i]) )"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " recall [ 0]:  Firings: valid/spurious = 30/0  Overlap = 0.316228\n",
        " recall [ 1]:  Firings: valid/spurious = 215/16  Overlap = 0.816717\n",
        " recall [ 2]:  Firings: valid/spurious = 272/0  Overlap = 0.952190\n",
        " recall [ 3]:  Firings: valid/spurious = 296/0  Overlap = 0.993311\n",
        " recall [ 4]:  Firings: valid/spurious = 296/0  Overlap = 0.993311\n",
        " recall [ 5]:  Firings: valid/spurious = 296/0  Overlap = 0.993311\n",
        " recall [ 6]:  Firings: valid/spurious = 295/0  Overlap = 0.991632\n",
        " recall [ 7]:  Firings: valid/spurious = 295/0  Overlap = 0.991632\n",
        " recall [ 8]:  Firings: valid/spurious = 294/0  Overlap = 0.989949\n",
        " recall [ 9]:  Firings: valid/spurious = 296/0  Overlap = 0.993311\n",
        " recall [10]:  Firings: valid/spurious = 296/0  Overlap = 0.993311\n"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# note plotting spurious firings here\n",
      "\n",
      "raster_plot(spikes)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\n498AAAAASUVORK5CYII=\n"
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<H3>$\\Delta t$= 50 ms</H3>"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "J2 = J*delta_t(50)\n",
      "print(J2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[[ 0.          0.59599776  0.59599776 ...,  0.59599776  0.59599776  0.        ]\n",
        " [ 0.59599776  0.          0.59599776 ...,  0.59599776  0.          0.        ]\n",
        " [ 0.          0.          0.         ...,  0.          0.          0.        ]\n",
        " ..., \n",
        " [ 0.          0.59599776  0.         ...,  0.          0.          0.        ]\n",
        " [ 0.          0.          0.         ...,  0.          0.          0.        ]\n",
        " [ 0.          0.59599776  0.         ...,  0.59599776  0.          0.        ]]\n"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "X = np.zeros(Z.n)\n",
      "X[:similarity] = 1 # insert a one in the first n*a*b1 elements\n",
      "# perform progressive recall in 10 steps\n",
      "# for the incomplete pattern\n",
      "nrecall = 10\n",
      "spikes = np.empty( (nrecall+1, ncells))\n",
      "\n",
      "spikes[0] = X # start with incomplete pattern\n",
      "\n",
      "for i in range(1, nrecall+1):\n",
      "    \n",
      "    h = np.inner(J2.T, X)/float(ncells)\n",
      "    spk_avg = np.mean(X)\n",
      "    X = (h<0.433*spk_avg).choose(1,0)\n",
      "    spikes[i] = X"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# output\n",
      "for i in range(spikes.shape[0]):\n",
      "    print(' recall [%2d]:'%i),\n",
      "    print(' Firings: valid/spurious = %d/%d'%( get_valid(Z, spikes[i]), get_spurious(Z, spikes[i]))) ,\n",
      "    print(' Overlap = %f'%get_overlap(Z, spikes[i]) )"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " recall [ 0]:  Firings: valid/spurious = 30/0  Overlap = 0.316228\n",
        " recall [ 1]:  Firings: valid/spurious = 6/0  Overlap = 0.141421\n",
        " recall [ 2]:  Firings: valid/spurious = 37/5  Overlap = 0.329622\n",
        " recall [ 3]:  Firings: valid/spurious = 0/0  Overlap = 0.000000\n",
        " recall [ 4]:  Firings: valid/spurious = 300/2700  Overlap = 0.316228\n",
        " recall [ 5]:  Firings: valid/spurious = 0/0  Overlap = 0.000000\n",
        " recall [ 6]:  Firings: valid/spurious = 300/2700  Overlap = 0.316228\n",
        " recall [ 7]:  Firings: valid/spurious = 0/0  Overlap = 0.000000\n",
        " recall [ 8]:  Firings: valid/spurious = 300/2700  Overlap = 0.316228\n",
        " recall [ 9]:  Firings: valid/spurious = 0/0  Overlap = 0.000000\n",
        " recall [10]:  Firings: valid/spurious = 300/2700  Overlap = 0.316228\n"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "raster_plot(spikes)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\n"
      }
     ],
     "prompt_number": 21
    }
   ],
   "metadata": {}
  }
 ]
}